import katex from 'katex';
import 'katex/dist/katex.min.css';

/**
 * 统一的LaTeX渲染函数
 * 将LaTeX公式转换为HTML字符串，用于在React组件中使用dangerouslySetInnerHTML渲染
 * 
 * @param latex LaTeX公式字符串
 * @returns 包含渲染后HTML的对象 { __html: string }
 */
export function renderLatex(latex: string) {
  try {
    // 使用KaTeX渲染LaTeX公式
    // 设置displayMode为true以支持块状公式显示
    // 设置throwOnError为false以避免因公式错误导致整个应用崩溃
    const html = katex.renderToString(latex, {
      throwOnError: false,
      displayMode: true,
      // 允许使用常用的数学符号和函数
      trust: true,
      // 支持更多LaTeX命令
      strict: false
    });
    return { __html: html };
  } catch (error) {
    console.error('LaTeX渲染错误:', error);
    // 如果渲染失败，返回原始公式作为回退
    return { __html: `<span style="color: red;">公式渲染失败: ${latex}</span>` };
  }
}

export default renderLatex;